home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / tex / texte / stw9402 / astrosym / astrosym.mac < prev    next >
Encoding:
Text File  |  1994-09-22  |  3.4 KB  |  115 lines

  1. % ASTROSYM.MAC : AstroSym (Version 1.00, May 1, 1992) - file 3 of 7
  2. % Peter Schmitt                     eMail: a8131dal@awiuni11.bitnet
  3. % Institute of Mathematics, University of Vienna    Vienna, Austria
  4. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  5.  
  6. %%%%%%%% variables
  7.  
  8. numeric r,R,D, a,b, s,t; %H,V,
  9.  
  10. pair 
  11.  TL,Tl,TC,Tr,TR,
  12.  tL,tl,tC,tr,tR,
  13.  CL,Cl,CC,Cr,CR,
  14.  bL,bl,bC,br,bR,
  15.  BL,Bl,BC,Br,BR;
  16.  
  17. pair BB,MM,TT, mm, LL,RR, ll,rr, HH,VV, vv,nn;
  18.  
  19. pair vP,hP, vp,hp, vd,hd; 
  20.  
  21. %%%%%%%% macros
  22.  
  23. def  PEN = pickup pencircle scaled 2P  enddef;
  24. def SPEN = pickup pensquare scaled 2P  enddef;
  25. def RPEN = pickup penrazor  scaled 2P  enddef;
  26. def  Pen = pickup pencircle scaled 2p; enddef;
  27.  
  28. def corrections =
  29.     vP:=(0,P); hP:=(P,0);
  30.     vp:=(0,p); hp:=(p,0);
  31.     vd:=vP-vp; hd:=hP-hp;
  32.     enddef;
  33.  
  34. def Corners (expr lft_corr, rt_corr, bot_corr, top_corr) =
  35.     BL := (0+lft_corr,-d+bot_corr); BR := (w-rt_corr,-d+bot_corr);
  36.     TL := (0+lft_corr, h-top_corr); TR := (w-rt_corr, h-top_corr);
  37.     enddef;
  38. def corners = Corners (P,P,P,P); enddef;
  39.  
  40. def Centers (expr x_ratio,y_ratio) =
  41.     BC:=bot x_ratio[BL,BR]; TC:=top x_ratio[TL,TR];
  42.     CL:=lft y_ratio[BL,TL]; CR:= rt y_ratio[BR,TR]; 
  43.     CC:=y_ratio[BC,TC];
  44.     enddef;
  45. def Centers (expr x_ratio,y_ratio) =
  46.     BC:=x_ratio[BL,BR]; TC:=x_ratio[TL,TR];
  47.     CL:=y_ratio[BL,TL]; CR:=y_ratio[BR,TR]; 
  48.     CC:=y_ratio[BC,TC];
  49.     enddef;
  50. def centers = Centers (1/2,1/2); enddef;
  51.  
  52. def TOP (expr lft_ratio,rt_ratio) =
  53.     Tl:=lft_ratio[TL,TR]; Tr:=rt_ratio[TL,TR];
  54.     enddef;
  55. def BOT (expr lft_ratio,rt_ratio) =
  56.     Bl:=lft_ratio[BL,BR]; Br:=rt_ratio[BL,BR];
  57.     enddef;
  58. def HOR (expr lft_ratio,rt_ratio) =
  59.     BOT(lft_ratio,rt_ratio); TOP(lft_ratio,rt_ratio);
  60.     enddef;
  61.  
  62. def Bot (expr ratio) =
  63.     bl:=ratio[Bl,Tl]; bC:=ratio[BC,TC]; br:=ratio[Br,Tr];
  64.     enddef;
  65. def Top (expr ratio) =
  66.     tl:=ratio[Bl,Tl]; tC:=ratio[BC,TC]; tr:=ratio[Br,Tr]; 
  67.     enddef;
  68.  
  69. def LFT (expr bot_ratio,top_ratio) =
  70.     bL:=bot_ratio[BL,TL]; tL:=top_ratio[BL,TL]; 
  71.     enddef;
  72. def RT (expr bot_ratio,top_ratio) =
  73.     bR:=bot_ratio[BR,TR]; tR:=top_ratio[BR,TR]; 
  74.     enddef;
  75.  
  76. def Fill (expr boundary) =
  77.     fill boundary; draw boundary;
  78.     enddef;
  79.  
  80. def ARROW (expr base,top, breadth, lcorr,bcorr) =
  81.     vv := top-base;
  82.     nn := breadth*(vv rotated 90)/2;
  83.     BB := base; TT := top; 
  84.     LL := base+nn-lcorr*vv; RR := base-nn-lcorr*vv;
  85.     ll := .5[base,top]+(1-bcorr)*nn/2;
  86.     rr := .5[base,top]-(1-bcorr)*nn/2;
  87.     enddef;
  88.  
  89. def arrow (expr base,top, breadth, lcorr,bcorr) =
  90.     ARROW (base,top, breadth, lcorr,bcorr);
  91.     Fill ( LL{dir angle(ll-LL)}..{dir angle(TT-ll)}TT
  92.          & TT{dir angle(rr-TT)}..{dir angle(RR-rr)}RR
  93.          & RR{dir angle(BB+lcorr*vv-RR)}..BB..{dir angle(LL-BB-lcorr*vv)}LL
  94.          ..cycle );
  95.     enddef;
  96.  
  97. def Arrow (expr base,top, breadth, lcorr,bcorr) =
  98.     ARROW (base,top, breadth, lcorr,bcorr);
  99.     draw LL{dir angle(ll-LL)}..{dir angle(TT-ll)}TT
  100.        & TT{dir angle(rr-TT)}..{dir angle(RR-rr)}RR;
  101.     draw BB--TT;
  102.     enddef;
  103.  
  104. def cross (expr base,top, breadth, base_corr) =
  105.     vv := (top-base-(0,base_corr));
  106.     nn := breadth*(vv rotated 90)/2;
  107.     BB := base; TT := top;
  108.     MM := .5[base+(0,base_corr),top];
  109.     LL := MM-nn; RR := MM+nn;
  110.     draw LL--RR; draw BB--TT;
  111.     enddef;
  112.  
  113. %%%%%%%%%%%%%%%%%%%%%%%%%%%
  114. %%% end of ASTROSYM.MAC %%%
  115.